package hangler

import (
	"github.com/gin-gonic/gin"
	"strconv"
	"xiao-hong-shu-app/models"
	"xiao-hong-shu-app/pkg"
)

func Add(c *gin.Context) {
	tel := c.PostForm("tel")
	password := c.PostForm("password")

	data := models.User{
		Tel:      tel,
		Password: pkg.Md5Password(password),
	}
	err := models.DB.Create(&data).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "注册失败",
		})
		return
	} else {
		c.JSON(200, gin.H{
			"code": 200,
			"msg":  "注册成功",
		})
		return
	}

}

func User(c *gin.Context) {
	tel := c.PostForm("tel")
	password := c.PostForm("password")
	var user models.User
	err := models.DB.Where("tel = ?", tel).First(&user).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "未找到电话号码",
		})
		return
	}
	if pkg.Md5Password(password) != user.Password {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "密码不正确",
		})
		return
	} else {
		token := pkg.TokenHandler(strconv.Itoa(int(user.ID)))
		c.JSON(200, gin.H{
			"code": 200,
			"msg":  "登陆成功",
			"data": token,
		})
		return
	}
}

func List(c *gin.Context) {
	page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
	size, _ := strconv.Atoi(c.DefaultQuery("size", "3"))

	offset := (page - 1) * size

	var count int64
	models.DB.Model(&models.Posts{}).Count(&count)

	var posts []models.Posts
	err := models.DB.Offset(offset).Limit(size).Find(&posts).Error
	if err != nil {
		c.JSON(200, gin.H{
			"code": 500,
			"msg":  "查询失败",
		})
		return
	} else {
		c.JSON(200, gin.H{
			"code": 200,
			"msg":  "查询成功",
			"data": gin.H{
				"count": count,
				"posts": posts,
			},
		})
		return
	}
}
